﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace GameSquares
{
    
    public class GraphItem
    {
     
        public static TypeGraphItem CurrentTypeGraphItem;

        
        public int Tag = -1;

        //Координоти комірок
        public Rectangle CellCoordinate;

         // Колір комірки без квадрата
        public Color Color = Color.DarkGray;
        public enum TypeGraphItem { tRhombus, tEllipse, tRectangle };

        // Портібен лише 
        Control Parent = null;

        // Таймери для псевдопоотоків
        Timer timerActive = new Timer();
        Timer timerVanish = new Timer();

        public GraphItem(Control parent)
        {
            Parent = parent;

            // Ініціалізація таймерів ----

            // таймер для мерехніння
            timerActive.Interval = 40;
            timerActive.Tick += new EventHandler(timerActive_Tick);
            timerActive.Enabled = false;

            // таймер зникнення
            timerVanish.Interval = 70;
            timerVanish.Tick += new EventHandler(timerVanish_Tick);
            timerVanish.Enabled = false;
            DeltaWidth = inflateSize;
            DeltaHeight = inflateSize;
        }


        #region Малювання
        //Кість
    

        int inflateSize = -4; // Параметри для мерехтіння
        public int DeltaWidth { get; private set; }
        public int DeltaHeight { get; private set; }   

        #endregion

        #region Властивості фігур

        bool visible = false;

        public bool Visible
        {
            get
            {
                if (vanish == true || visible == false)
                    return false;

                return true;
            }
            set
            {
                visible = value;
            }
        }


        public bool Ingame { get; set; }
        public bool BeenClicked { get; set; }

        bool active = false;
        
        //Влістивість активності
        public bool Active
        {
            get
            {
                return active;
            }
            set
            {
                active = value;

                if (active == true)
                {
                    timerActive.Enabled = true;
                }
                else
                {
                    timerActive.Enabled = false;
                    DeltaWidth = inflateSize;
                    DeltaHeight = inflateSize;
                }
            }
        }

        // Властивість зникнення
        bool vanish = false;
        public bool Vanish
        {
            get
            {
                return vanish;
            }
            set
            {
                vanish = value;

                if (vanish == true)
                {
                    timerVanish.Enabled = true;
                }
            }
        }

        #endregion

        #region Таймери графэлементу - таймер активності і таймер зникнення
        int k = 1;

        // Таймер активності, періодично  збільшує і зменшує фігуру

        void timerActive_Tick(object sender, EventArgs e)
        {
            DeltaWidth += 1 * k;
            DeltaHeight += 1 * k;
            if (DeltaWidth >= -2)
                k = -1;
            else if (DeltaWidth <= -7)
                k = 1;

            Parent.Invalidate(CellCoordinate);
        }

  
        // Таймер Зникнення 
        
        void timerVanish_Tick(object sender, EventArgs e)
        {

            DeltaWidth += -2;
            DeltaHeight += -2;

            if (DeltaWidth < -14)
            {
                timerVanish.Enabled = false;
                visible = true;
                vanish = false;
                DeltaWidth = inflateSize;
                DeltaHeight = inflateSize;
            }

            Parent.Invalidate(CellCoordinate);
        }
        #endregion

    }
}
